#ifndef ICON_MANAGER_H
#define ICON_MANAGER_H

#include <QObject>
#include <QIcon>
#include <QColor>
#include <QToolBar>
#include <QAction>
#include <QMenu>
#include <QTimer>
#include "modern_icons.h"

class QMainWindow;

/**
 * @brief 图标管理器 - 负责工具条图标的统一管理和动态更新
 *
 * 功能特点：
 * - 现代图标系统集成
 * - 主题色彩自适应
 * - 导出模式智能切换
 * - 窗口大小响应式适配
 * - 用户偏好记忆
 */
class IconManager : public QObject
{
    Q_OBJECT

public:
    explicit IconManager(QMainWindow* mainWindow, QObject* parent = nullptr);
    ~IconManager();

    // 初始化图标系统
    void initialize();

    // 工具条管理
    void createFileToolBar();
    void updateToolBarStyle();
    void setToolBarVisible(bool visible);

    // 图标更新
    void updateAllIcons();
    void updateIconTheme();
    void regenerateIcons();

    // 导出模式管理
    void setExportMode(ModernIcons::ExportMode mode);
    ModernIcons::ExportMode exportMode() const;
    void toggleExportMode();

    // 主题管理
    void setThemeColor(const QColor& color);
    QColor themeColor() const;
    void setDarkMode(bool dark);
    bool isDarkMode() const;

    // 尺寸适配
    void setIconSize(int size);
    int iconSize() const;
    void updateIconSizes();

    // 动作获取
    QAction* importAction() const { return m_importAction; }
    QAction* exportAction() const { return m_exportAction; }
    QToolBar* fileToolBar() const { return m_fileToolBar; }

    // 配置保存/加载
    void saveSettings();
    void loadSettings();

    // 静态工具方法
    static QString getToolBarStyleSheet(bool darkMode = false);
    static QString getModernToolBarStyle(bool darkMode = false);

    // 事件过滤器
    bool eventFilter(QObject* obj, QEvent* event) override;

signals:
    void importTriggered();
    void exportTriggered();
    void exportModeChanged(ModernIcons::ExportMode mode);
    void themeChanged(const QColor& color);

private slots:
    void onImportActionTriggered();
    void onExportActionTriggered();
    void onExportIconChanged(const QIcon& icon);
    void onExportModeChanged(ModernIcons::ExportMode mode);
    void onWindowResized();
    void onIconSizeChanged(const QSize& size);

private:
    // 初始化函数
    void createActions();
    void setupConnections();
    void applyIconSizes();
    void updateActionTooltips();
    void updateIconVariants();
    void showExportModeMenu(const QPoint& pos);

    // 成员变量
    QMainWindow* m_mainWindow;
    ModernIcons* m_modernIcons;
    QToolBar* m_fileToolBar;
    QAction* m_importAction;
    QAction* m_exportAction;

    // 状态变量
    int m_currentIconSize;
    bool m_isDarkMode;
    bool m_isInitialized;

    // 配置变量
    QColor m_themeColor;
    ModernIcons::ExportMode m_defaultExportMode;
};

#endif // ICON_MANAGER_H